<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Apache Struts</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Apache_Struts"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Apache_Struts rootpage-Apache_Struts skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Apache Struts</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">For the predecessor of Apache Struts 2, see <a href="Apache_Struts_1" title="Apache Struts 1">Apache Struts 1</a>.</div>
<style data-mw-deduplicate="TemplateStyles:r1295905060">
/* start https://en.wikipedia.org/ */
.mw-parser-output .infobox-subbox{padding:0;border:none;margin:-3px;width:auto;min-width:100%;font-size:100%;clear:none;float:none;background-color:transparent}.mw-parser-output .infobox-3cols-child{margin:auto}.mw-parser-output .infobox .navbar{font-size:100%}@media screen{html.skin-theme-clientpref-night .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .infobox-full-data:not(.notheme)>div:not(.notheme)[style]{background:#1f1f23!important;color:#f8f9fa}}@media(min-width:640px){body.skin--responsive .mw-parser-output .infobox-table{display:table!important}body.skin--responsive .mw-parser-output .infobox-table>caption{display:table-caption!important}body.skin--responsive .mw-parser-output .infobox-table>tbody{display:table-row-group}body.skin--responsive .mw-parser-output .infobox-table th,body.skin--responsive .mw-parser-output .infobox-table td{padding-left:inherit;padding-right:inherit}}
/* end https://en.wikipedia.org/ */
</style><table class="infobox vevent"><tbody><tr><th colspan="2" class="infobox-above summary">Apache Struts 2</th></tr><tr><td colspan="2" class="infobox-image logo"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Programmer" title="Programmer">Developer(s)</a></th><td class="infobox-data"><a href="Apache_Software_Foundation" class="mw-redirect" title="Apache Software Foundation">Apache Software Foundation</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Initial release</th><td class="infobox-data">October 10, 2006<span style="display:none"> (<span class="bday dtstart published updated">2006-10-10</span>)</span></td></tr><tr style="display: none;"><td colspan="2" class="infobox-full-data"></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_release_life_cycle" title="Software release life cycle">Stable release</a></th><td class="infobox-data"><div style="margin:0px;">7.0.3
/ March 7, 2025<span style="display:none"> (<span class="bday dtstart published updated">2025-03-07</span>)</span><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></div></td></tr><tr style="display:none"><td colspan="2">
</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Repository_(version_control)" title="Repository (version control)">Repository</a></th><td class="infobox-data"><style data-mw-deduplicate="TemplateStyles:r1126788409">
/* start https://en.wikipedia.org/ */
.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}
/* end https://en.wikipedia.org/ */
</style><div class="plainlist"><ul><li><span class="url"><a rel="nofollow" class="external text" href="https://github.com/apache/struts">github<wbr>.com<wbr>/apache<wbr>/struts</a></span> </li></ul>
</div></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Written in</th><td class="infobox-data"><a href="Java_(programming_language)" title="Java (programming language)">Java</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Operating_system" title="Operating system">Operating system</a></th><td class="infobox-data"><a href="Cross-platform" class="mw-redirect" title="Cross-platform">Cross-platform</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Computing_platform" title="Computing platform">Platform</a></th><td class="infobox-data"><a href="Cross-platform" class="mw-redirect" title="Cross-platform">Cross-platform</a> (<a href="Java_Virtual_Machine" class="mw-redirect" title="Java Virtual Machine">JVM</a>)</td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Predecessor</th><td class="infobox-data"><a href="Apache_Struts_1" title="Apache Struts 1">Apache Struts 1</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_categories#Categorization_approaches" title="Software categories">Type</a></th><td class="infobox-data"><a href="Web_framework" title="Web framework">Web framework</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;"><a href="Software_license" title="Software license">License</a></th><td class="infobox-data"><a href="Apache_License_2.0" class="mw-redirect" title="Apache License 2.0">Apache License 2.0</a></td></tr><tr><th scope="row" class="infobox-label" style="white-space: nowrap;">Website</th><td class="infobox-data"><span class="url"><a rel="nofollow" class="external text" href="https://struts.apache.org/">struts<wbr>.apache<wbr>.org</a></span> </td></tr></tbody></table>
<p><b>Apache Struts 2</b> is an <a href="Open-source_software" title="Open-source software">open-source</a> <a href="Web_application_framework" class="mw-redirect" title="Web application framework">web application framework</a> for developing <a href="Java_EE" class="mw-redirect" title="Java EE">Java EE</a> <a href="Web_application" title="Web application">web applications</a>. It uses and extends the <a href="Java_Servlet" class="mw-redirect" title="Java Servlet">Java Servlet</a> <a href="Application_programming_interface" class="mw-redirect" title="Application programming interface">API</a> to encourage developers to adopt a <a href="Model%E2%80%93view%E2%80%93controller" title="Model–view–controller">model–view–controller</a> (MVC) architecture. The <b>WebWork</b> framework spun off from <a href="Apache_Struts_1" title="Apache Struts 1">Apache Struts 1</a> aiming to offer enhancements and refinements while retaining the same general architecture of the original Struts framework. In December 2005, it was announced that WebWork 2.2 was adopted as Apache Struts 2, which reached its first full release in February 2007.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>Struts 2 has a history of critical security bugs,<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> many tied to its use of <a href="OGNL" title="OGNL">OGNL</a> technology;<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> some vulnerabilities can lead to <a href="Arbitrary_code_execution" title="Arbitrary code execution">arbitrary code execution</a>. In October 2017, it was reported that failure by <a href="Equifax" title="Equifax">Equifax</a> to address a Struts 2 vulnerability advised in March 2017 was later exploited in the <a href="Data_breach" title="Data breach">data breach</a> that was <a href="2017_Equifax_data_breach" title="2017 Equifax data breach">disclosed by Equifax in September 2017</a>.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Features">Features</h2></div>
<ul><li>Simple <a href="Plain_Old_Java_Object" class="mw-redirect" title="Plain Old Java Object">POJO</a>-based actions<sup id="cite_ref-FOOTNOTENewton20099§1_Struts_and_Agile_Development_-_Actions_7-0" class="reference"><a href="#cite_note-FOOTNOTENewton20099§1_Struts_and_Agile_Development_-_Actions-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup></li>
<li>Simplified testability</li>
<li>Thread safe</li>
<li><a href="Ajax_(programming)" title="Ajax (programming)">AJAX</a> support
<ul><li><a href="JQuery" title="JQuery">jQuery</a> plugin</li>
<li><a href="Dojo_Toolkit" title="Dojo Toolkit">Dojo Toolkit</a> plugin<sup id="cite_ref-FOOTNOTENewton2009258§13_Rich_Internet_Applications_-_Dojo_tags_8-0" class="reference"><a href="#cite_note-FOOTNOTENewton2009258§13_Rich_Internet_Applications_-_Dojo_tags-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> (deprecated)</li>
<li>Ajax client-side validation</li></ul></li>
<li>Template support<sup id="cite_ref-FOOTNOTENewton2009294§12_Comprehensive_Testing_-_Detour:_Struts_and_Spring_in_a_nutshell_9-0" class="reference"><a href="#cite_note-FOOTNOTENewton2009294§12_Comprehensive_Testing_-_Detour:_Struts_and_Spring_in_a_nutshell-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup></li>
<li>Support for different result types<sup id="cite_ref-FOOTNOTENewton200957–81§4_Results_and_Result_Types_-_Dojo_tags_10-0" class="reference"><a href="#cite_note-FOOTNOTENewton200957–81§4_Results_and_Result_Types_-_Dojo_tags-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup></li>
<li>Easy to extend with plugins
<ul><li><a href="Representational_state_transfer" class="mw-redirect" title="Representational state transfer">REST</a> plugin<sup id="cite_ref-FOOTNOTENewton2009249–255§12_Themes_and_Templates_-_The_REST_plug-in_11-0" class="reference"><a href="#cite_note-FOOTNOTENewton2009249–255§12_Themes_and_Templates_-_The_REST_plug-in-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup> (REST-based actions, extension-less URLs)</li>
<li>Convention plugin (action configuration via Conventions and Annotations)</li>
<li>Spring plugin<sup id="cite_ref-FOOTNOTENewton2009294§13_Comprehensive_Testing_-_Detour:_Struts_and_Spring_in_a_nutshell_12-0" class="reference"><a href="#cite_note-FOOTNOTENewton2009294§13_Comprehensive_Testing_-_Detour:_Struts_and_Spring_in_a_nutshell-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> (<a href="Dependency_injection" title="Dependency injection">dependency injection</a>)</li>
<li><a href="Hibernate_(Java)" class="mw-redirect" title="Hibernate (Java)">Hibernate</a> plugin</li>
<li>Support in design</li>
<li>JFreechart plugin (charts)</li>
<li><a href="JQuery" title="JQuery">jQuery</a> plugin (Ajax support, UI widgets, dynamic table, charts)</li>
<li>Rome plugin</li></ul></li></ul>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1266661725">
/* start https://en.wikipedia.org/ */
.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}
/* end https://en.wikipedia.org/ */
</style>
<ul><li><a href="List_of_application_servers#Java" title="List of application servers">List of application servers</a></li>
<li><a href="Comparison_of_server-side_web_frameworks" title="Comparison of server-side web frameworks">Comparison of web frameworks</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Citations">Citations</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://github.com/apache/struts/releases/tag/STRUTS_7_0_3">"Struts 7.0.3"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">16 March</span> 2025</span>.</cite></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://struts.apache.org/release/2.2.x/">About Apache Struts 2</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20140114170139/http://struts.apache.org/release/2.2.x/">Archived</a> January 14, 2014, at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.cvedetails.com/vulnerability-list/vendor_id-45/product_id-6117/Apache-Struts.html">"Apache Struts : List of security vulnerabilities"</a>. <i>cvedetails.com</i><span class="reference-accessdate">. Retrieved <span class="nowrap">October 2,</span> 2017</span>.</cite></span>
</li>
<li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><cite id="CITEREFMunoz2014" class="citation web cs1">Munoz, Alvaro (January 14, 2014). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20171003124645/https://community.saas.hpe.com/t5/Security-Research/Struts-2-OGNL-Expression-Injections/ba-p/288881#.WdL6ca2ZNxw">"Struts 2: OGNL Expression Injections"</a>. <i>HPE.com</i>. Archived from <a rel="nofollow" class="external text" href="https://community.saas.hpe.com/t5/Security-Research/Struts-2-OGNL-Expression-Injections/ba-p/288881#.WdL6ca2ZNxw">the original</a> on October 3, 2017<span class="reference-accessdate">. Retrieved <span class="nowrap">October 2,</span> 2017</span>.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFChirgwin2017" class="citation web cs1">Chirgwin, Richard (October 2, 2017). <a rel="nofollow" class="external text" href="https://www.theregister.co.uk/2017/10/02/equifax_ceo_richard_smith_congressional_testimony/?mt=1506988904204">"Equifax couldn't find or patch vulnerable Struts implementations"</a>. <i><a href="The_Register" title="The Register">The Register</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">October 2,</span> 2017</span>.</cite></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><cite id="CITEREFGoodin2017" class="citation web cs1">Goodin, Dan (October 2, 2017). <a rel="nofollow" class="external text" href="https://arstechnica.com/information-technology/2017/10/a-series-of-delays-and-major-errors-led-to-massive-equifax-breach/">"A series of delays and major errors led to massive Equifax breach"</a>. <i><a href="Ars_Technica" title="Ars Technica">Ars Technica</a></i><span class="reference-accessdate">. Retrieved <span class="nowrap">October 2,</span> 2017</span>.</cite></span>
</li>
<li id="cite_note-FOOTNOTENewton20099§1_Struts_and_Agile_Development_-_Actions-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTENewton20099§1_Struts_and_Agile_Development_-_Actions_7-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFNewton2009">Newton 2009</a>, p. 9, §1 Struts and Agile Development - Actions.</span>
</li>
<li id="cite_note-FOOTNOTENewton2009258§13_Rich_Internet_Applications_-_Dojo_tags-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTENewton2009258§13_Rich_Internet_Applications_-_Dojo_tags_8-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFNewton2009">Newton 2009</a>, p. 258, §13 Rich Internet Applications - Dojo tags.</span>
</li>
<li id="cite_note-FOOTNOTENewton2009294§12_Comprehensive_Testing_-_Detour:_Struts_and_Spring_in_a_nutshell-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTENewton2009294§12_Comprehensive_Testing_-_Detour:_Struts_and_Spring_in_a_nutshell_9-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFNewton2009">Newton 2009</a>, p. 294, §12 Comprehensive Testing - Detour: Struts and Spring in a nutshell.</span>
</li>
<li id="cite_note-FOOTNOTENewton200957–81§4_Results_and_Result_Types_-_Dojo_tags-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTENewton200957–81§4_Results_and_Result_Types_-_Dojo_tags_10-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFNewton2009">Newton 2009</a>, pp. 57–81, §4 Results and Result Types - Dojo tags.</span>
</li>
<li id="cite_note-FOOTNOTENewton2009249–255§12_Themes_and_Templates_-_The_REST_plug-in-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTENewton2009249–255§12_Themes_and_Templates_-_The_REST_plug-in_11-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFNewton2009">Newton 2009</a>, pp. 249–255, §12 Themes and Templates - The REST plug-in.</span>
</li>
<li id="cite_note-FOOTNOTENewton2009294§13_Comprehensive_Testing_-_Detour:_Struts_and_Spring_in_a_nutshell-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTENewton2009294§13_Comprehensive_Testing_-_Detour:_Struts_and_Spring_in_a_nutshell_12-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFNewton2009">Newton 2009</a>, p. 294, §13 Comprehensive Testing - Detour: Struts and Spring in a nutshell.</span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<ul><li><cite id="CITEREFNewton2009" class="citation book cs1">Newton, Dave (2009). <i>Apache Struts 2 Web Application Development</i>. Packt Publishing. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-84719-339-1</bdi>.</cite></li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<ul><li><span class="official-website"><span class="url"><a rel="nofollow" class="external text" href="https://struts.apache.org/">Official website</a></span></span> </li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Web_frameworks386" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div id="Web_frameworks386" style="font-size:114%;margin:0 4em"><a href="Web_framework" title="Web framework">Web frameworks</a></div></th></tr><tr><td class="navbox-abovebelow hlist" colspan="2"><div>
<ul><li><a href="Comparison_of_server-side_web_frameworks" title="Comparison of server-side web frameworks">Comparison</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href=".NET" title=".NET">.NET</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ASP.NET" title="ASP.NET">ASP.NET</a>
<ul><li><a href="ASP.NET_Core" title="ASP.NET Core">Core</a></li>
<li><a href="ASP.NET_AJAX" title="ASP.NET AJAX">AJAX</a></li>
<li><a href="ASP.NET_Dynamic_Data" title="ASP.NET Dynamic Data">Dynamic Data</a></li>
<li><a href="ASP.NET_MVC" title="ASP.NET MVC">MVC</a></li>
<li><a href="ASP.NET_Razor" title="ASP.NET Razor">Razor</a></li>
<li><a href="ASP.NET_Web_Forms" title="ASP.NET Web Forms">Web Forms</a></li></ul></li>
<li><a href="Blazor" title="Blazor">Blazor</a></li>
<li><a href="DotNetNuke" class="mw-redirect" title="DotNetNuke">DNN</a></li>
<li><a href="Base_One_Foundation_Component_Library" title="Base One Foundation Component Library">BFC</a></li>
<li><a href="MonoRail_(software)" title="MonoRail (software)">MonoRail</a></li>
<li><a href="Umbraco" title="Umbraco">Umbraco</a></li>
<li><a href="WebSharper" title="WebSharper">WebSharper</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="C%2B%2B" title="C++">C++</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="CppCMS" title="CppCMS">CppCMS</a></li>
<li><a href="Drogon_(software)" title="Drogon (software)">Drogon</a></li>
<li><a href="Wt_(web_toolkit)" title="Wt (web toolkit)">Wt</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Adobe_ColdFusion" title="Adobe ColdFusion">ColdFusion</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="ColdBox_Platform" title="ColdBox Platform">ColdBox Platform</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Common_Lisp" title="Common Lisp">Common Lisp</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="CL-HTTP" title="CL-HTTP">CL-HTTP</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Haskell" title="Haskell">Haskell</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Servant_(web_framework)" title="Servant (web framework)">Servant</a></li>
<li><a href="Snap_(web_framework)" title="Snap (web framework)">Snap</a></li>
<li><a href="Yesod_(web_framework)" title="Yesod (web framework)">Yesod</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Java_(software_platform)" title="Java (software platform)">Java</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="AppFuse" title="AppFuse">AppFuse</a></li>
<li><a href="Grails_(framework)" title="Grails (framework)">Grails</a></li>
<li><a href="Google_Web_Toolkit" title="Google Web Toolkit">GWT</a></li>
<li><a href="ICEfaces" title="ICEfaces">ICEfaces</a></li>
<li><a href="JHipster" title="JHipster">JHipster</a></li>
<li><a href="JWt_(Java_web_toolkit)" title="JWt (Java web toolkit)">JWt</a></li>
<li><a href="Jakarta_Faces#JSF_and_Ajax" title="Jakarta Faces">Mojarra</a></li>
<li><a href="Play_Framework" title="Play Framework">Play</a></li>
<li><a href="Remote_Application_Platform" title="Remote Application Platform">Remote Application Platform</a></li>
<li><a href="JBoss_Seam" title="JBoss Seam">Seam</a></li>
<li><a href="Apache_Sling" title="Apache Sling">Sling</a></li>
<li><a href="Spring_Framework#Model-view-controller_framework" title="Spring Framework">Spring</a></li>
<li><a href="Stripes_(framework)" title="Stripes (framework)">Stripes</a></li>
<li><a href="Apache_Tapestry" title="Apache Tapestry">Tapestry</a></li>
<li><a href="Vaadin" title="Vaadin">Vaadin</a></li>
<li><a href="Vert.x" title="Vert.x">Vert.x</a></li>
<li><a href="Apache_Wicket" title="Apache Wicket">Wicket</a></li>
<li><a href="WaveMaker" title="WaveMaker">WaveMaker</a></li>
<li><a href="ZK_(framework)" title="ZK (framework)">ZK</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="JavaScript" title="JavaScript">JavaScript</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Angular_(web_framework)" title="Angular (web framework)">Angular</a>/<a href="AngularJS" title="AngularJS">AngularJS</a></li>
<li><a href="Backbone.js" title="Backbone.js">Backbone.js</a></li>
<li><a href="Google_Closure_Tools" title="Google Closure Tools">Closure</a></li>
<li><a href="Dojo_Toolkit" title="Dojo Toolkit">Dojo Toolkit</a></li>
<li><a href="Ember.js" title="Ember.js">Ember.js</a></li>
<li><a href="Express.js" title="Express.js">Express.js</a></li>
<li><a href="Ext_JS" title="Ext JS">Ext JS</a></li>
<li><a href="Fastify" title="Fastify">Fastify</a></li>
<li><a href="Htmx" title="Htmx">htmx</a></li>
<li><a href="JQuery" title="JQuery">jQuery</a></li>
<li><a href="Knockout.js" class="mw-redirect" title="Knockout.js">Knockout.js</a></li>
<li><a href="Meteor_(web_framework)" title="Meteor (web framework)">Meteor</a></li>
<li><a href="MooTools" title="MooTools">MooTools</a></li>
<li><a href="NestJS" title="NestJS">NestJS</a></li>
<li><a href="Next.js" title="Next.js">Next.js</a></li>
<li><a href="Nuxt.js" class="mw-redirect" title="Nuxt.js">Nuxt.js</a></li>
<li><a href="Node.js" title="Node.js">Node.js</a></li>
<li><a href="OpenUI5" title="OpenUI5">OpenUI5</a></li>
<li><a href="Prototype_JavaScript_Framework" title="Prototype JavaScript Framework">Prototype</a></li>
<li><a href="React_(software)" title="React (software)">React</a></li>
<li><a href="Remix_(web_framework)" class="mw-redirect" title="Remix (web framework)">Remix</a></li>
<li><a href="Sencha_Touch" title="Sencha Touch">Sencha Touch</a></li>
<li><a href="SproutCore" title="SproutCore">SproutCore</a></li>
<li><a href="Svelte" title="Svelte">Svelte</a></li>
<li><a href="Vue.js" title="Vue.js">Vue.js</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Perl" title="Perl">Perl</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Catalyst_(software)" title="Catalyst (software)">Catalyst</a></li>
<li><a href="Dancer_(software)" title="Dancer (software)">Dancer</a></li>
<li><a href="Maypole_framework" class="mw-redirect" title="Maypole framework">Maypole</a></li>
<li><a href="Mojolicious" title="Mojolicious">Mojolicious</a></li>
<li><a href="WebGUI" title="WebGUI">WebGUI</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="PHP" title="PHP">PHP</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="CakePHP" title="CakePHP">CakePHP</a></li>
<li><a href="CodeIgniter" title="CodeIgniter">CodeIgniter</a></li>
<li><a href="Drupal" title="Drupal">Drupal</a></li>
<li><a href="EZ_Publish" title="EZ Publish">eZ Publish</a></li>
<li><a href="Fat-Free_Framework" title="Fat-Free Framework">Fat-Free</a></li>
<li><a href="Neos_Flow" title="Neos Flow">Flow</a></li>
<li><a href="FuelPHP" title="FuelPHP">FuelPHP</a></li>
<li><a href="Grav_(CMS)" title="Grav (CMS)">Grav</a></li>
<li><a href="Gyroscope_(software)" title="Gyroscope (software)">Gyroscope</a></li>
<li><a href="Horde_(software)" title="Horde (software)">Horde</a></li>
<li><a href="Joomla" title="Joomla">Joomla!</a></li>
<li><a href="Laminas" title="Laminas">Laminas</a></li>
<li><a href="Laravel" title="Laravel">Laravel</a></li>
<li><a href="Li3_(software)" title="Li3 (software)">li₃</a></li>
<li><a href="Midgard_(software)" title="Midgard (software)">Midgard</a></li>
<li><a href="MODX" title="MODX">MODX</a></li>
<li><a href="Phalcon_(framework)" title="Phalcon (framework)">Phalcon</a></li>
<li><a href="PHP-Fusion" title="PHP-Fusion">PHP-Fusion</a></li>
<li><a href="PHP-Nuke" title="PHP-Nuke">PHP-Nuke</a></li>
<li><a href="Pop_PHP_Framework" title="Pop PHP Framework">Pop PHP</a></li>
<li><a href="PRADO_(framework)" title="PRADO (framework)">PRADO</a></li>
<li><a href="ProcessWire" title="ProcessWire">ProcessWire</a></li>
<li><a href="Qcodo" title="Qcodo">Qcodo</a></li>
<li><a href="Silverstripe_CMS" title="Silverstripe CMS">Silverstripe</a></li>
<li><a href="Symfony" title="Symfony">Symfony</a></li>
<li><a href="TYPO3" title="TYPO3">TYPO3</a></li>
<li><a href="WordPress" title="WordPress">WordPress</a></li>
<li><a href="XOOPS" title="XOOPS">XOOPS</a></li>
<li><a href="Yii" title="Yii">Yii</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Python_(programming_language)" title="Python (programming language)">Python</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Zope#BlueBream" title="Zope">BlueBream</a></li>
<li><a href="CherryPy" title="CherryPy">CherryPy</a></li>
<li><a href="CubicWeb" title="CubicWeb">CubicWeb</a></li>
<li><a href="Django_(web_framework)" title="Django (web framework)">Django</a></li>
<li><a href="FastAPI" title="FastAPI">FastAPI</a></li>
<li><a href="Flask_(web_framework)" title="Flask (web framework)">Flask</a></li>
<li><a href="Grok_(web_framework)" class="mw-redirect" title="Grok (web framework)">Grok</a></li>
<li><a href="Nevow" class="mw-redirect" title="Nevow">Nevow</a></li>
<li><a href="Pyjs" title="Pyjs">Pyjs</a></li>
<li><a href="Pylons_project#Pylons_Framework" title="Pylons project">Pylons</a></li>
<li><a href="Pylons_project#Pyramid" title="Pylons project">Pyramid</a></li>
<li><a href="Quixote_(web_framework)" title="Quixote (web framework)">Quixote</a></li>
<li><a href="Tornado_(web_server)" title="Tornado (web server)">Tornado</a></li>
<li><a href="TurboGears" title="TurboGears">TurboGears</a></li>
<li><a href="Web2py" title="Web2py">web2py</a></li>
<li><a href="Zope#Zope_2" title="Zope">Zope 2</a></li>
<li><i>more</i>...</li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Merb" title="Merb">Merb</a></li>
<li><a href="Padrino_(web_framework)" title="Padrino (web framework)">Padrino</a></li>
<li><a href="Ruby_on_Rails" title="Ruby on Rails">Ruby on Rails</a></li>
<li><a href="Sinatra_(software)" title="Sinatra (software)">Sinatra</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Rust_(programming_language)" title="Rust (programming language)">Rust</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Rocket_(web_framework)" title="Rocket (web framework)">Rocket</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Scala_(programming_language)" title="Scala (programming language)">Scala</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Lift_(web_framework)" title="Lift (web framework)">Lift</a></li>
<li><a href="Play_Framework" title="Play Framework">Play</a></li>
<li><a href="Scalatra" title="Scalatra">Scalatra</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Smalltalk" title="Smalltalk">Smalltalk</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="AIDA/Web" title="AIDA/Web">AIDA/Web</a></li>
<li><a href="Seaside_(software)" title="Seaside (software)">Seaside</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other languages</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Oracle_Application_Express" title="Oracle Application Express">Application Express</a> (<a href="PL/SQL" title="PL/SQL">PL/SQL</a>)</li>
<li><a href="Grails_(framework)" title="Grails (framework)">Grails</a> (<a href="Groovy_(programming_language)" class="mw-redirect" title="Groovy (programming language)">Groovy</a>)</li>
<li><a href="OpenACS" class="mw-redirect" title="OpenACS">OpenACS</a> (<a href="Tcl" title="Tcl">Tcl</a>)</li>
<li><a href="Phoenix_(web_framework)" title="Phoenix (web framework)">Phoenix</a> (<a href="Elixir_(programming_language)" title="Elixir (programming language)">Elixir</a>)</li>
<li><a href="Shiny_(web_framework)" title="Shiny (web framework)">Shiny (web framework)</a> (<a href="R_(programming_language)" title="R (programming language)">R</a>)</li>
<li><a href="SproutCore" title="SproutCore">SproutCore</a> (<a href="JavaScript" title="JavaScript">JavaScript</a>-<a href="Ruby_(programming_language)" title="Ruby (programming language)">Ruby</a>)</li>
<li><a href="Yaws_(web_server)" title="Yaws (web server)">Yaws</a> (<a href="Erlang_(programming_language)" title="Erlang (programming language)">Erlang</a>)</li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="The_Apache_Software_Foundation253" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="The_Apache_Software_Foundation253" style="font-size:114%;margin:0 4em"><a href="The_Apache_Software_Foundation" title="The Apache Software Foundation">The Apache Software Foundation</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Top-level<br>projects</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Apache_Accumulo" title="Apache Accumulo">Accumulo</a></li>
<li><a href="Apache_ActiveMQ" title="Apache ActiveMQ">ActiveMQ</a></li>
<li><a href="Apache_Airavata" title="Apache Airavata">Airavata</a></li>
<li><a href="Apache_Airflow" title="Apache Airflow">Airflow</a></li>
<li><a href="Apache_Allura" title="Apache Allura">Allura</a></li>
<li><a href="Apache_Ambari" class="mw-redirect" title="Apache Ambari">Ambari</a></li>
<li><a href="Apache_Ant" title="Apache Ant">Ant</a></li>
<li><a href="Apache_Aries" title="Apache Aries">Aries</a></li>
<li><a href="Apache_Arrow" title="Apache Arrow">Arrow</a></li>
<li><a href="Apache_HTTP_Server" title="Apache HTTP Server">Apache HTTP Server</a></li>
<li><a href="Apache_Portable_Runtime" title="Apache Portable Runtime">APR</a></li>
<li><a href="Apache_Avro" title="Apache Avro">Avro</a></li>
<li><a href="Apache_Axis" title="Apache Axis">Axis</a></li>
<li><a href="Apache_Axis2" title="Apache Axis2">Axis2</a></li>
<li><a href="Apache_Beam" title="Apache Beam">Beam</a></li>
<li><a href="Apache_Bloodhound" class="mw-redirect" title="Apache Bloodhound">Bloodhound</a></li>
<li><a href="Apache_Brooklyn" title="Apache Brooklyn">Brooklyn</a></li>
<li><a href="Apache_Calcite" title="Apache Calcite">Calcite</a></li>
<li><a href="Apache_Camel" title="Apache Camel">Camel</a></li>
<li><a href="Apache_CarbonData" title="Apache CarbonData">CarbonData</a></li>
<li><a href="Apache_Cassandra" title="Apache Cassandra">Cassandra</a></li>
<li><a href="Apache_Cayenne" title="Apache Cayenne">Cayenne</a></li>
<li><a href="Apache_CloudStack" title="Apache CloudStack">CloudStack</a></li>
<li><a href="Apache_Cocoon" title="Apache Cocoon">Cocoon</a></li>
<li><a href="Apache_Cordova" title="Apache Cordova">Cordova</a></li>
<li><a href="Apache_CouchDB" title="Apache CouchDB">CouchDB</a></li>
<li><a href="Apache_cTAKES" title="Apache cTAKES">cTAKES</a></li>
<li><a href="Apache_CXF" title="Apache CXF">CXF</a></li>
<li><a href="Apache_Derby" title="Apache Derby">Derby</a></li>
<li><a href="Apache_Directory" title="Apache Directory">Directory</a></li>
<li><a href="Apache_Drill" title="Apache Drill">Drill</a></li>
<li><a href="Apache_Druid" title="Apache Druid">Druid</a></li>
<li><a href="Apache_Empire-db" title="Apache Empire-db">Empire-db</a></li>
<li><a href="Apache_Felix" title="Apache Felix">Felix</a></li>
<li><a href="Apache_Flex" title="Apache Flex">Flex</a></li>
<li><a href="Apache_Flink" title="Apache Flink">Flink</a></li>
<li><a href="Apache_Flume" class="mw-redirect" title="Apache Flume">Flume</a></li>
<li><a href="FreeMarker" title="FreeMarker">FreeMarker</a></li>
<li><a href="Apache_Geronimo" title="Apache Geronimo">Geronimo</a></li>
<li><a href="Apache_Groovy" title="Apache Groovy">Groovy</a></li>
<li><a href="Apache_Guacamole" title="Apache Guacamole">Guacamole</a></li>
<li>Gump</li>
<li><a href="Apache_Hadoop" title="Apache Hadoop">Hadoop</a></li>
<li><a href="Apache_HBase" title="Apache HBase">HBase</a></li>
<li><a href="Apache_Helix" title="Apache Helix">Helix</a></li>
<li><a href="Apache_Hive" title="Apache Hive">Hive</a></li>
<li><a href="Apache_Iceberg" title="Apache Iceberg">Iceberg</a></li>
<li><a href="Apache_Ignite" title="Apache Ignite">Ignite</a></li>
<li><a href="Apache_Impala" title="Apache Impala">Impala</a></li>
<li><a href="Apache_Jackrabbit" title="Apache Jackrabbit">Jackrabbit</a></li>
<li><a href="Apache_James" title="Apache James">James</a></li>
<li><a href="Apache_Jena" title="Apache Jena">Jena</a></li>
<li><a href="Apache_JMeter" title="Apache JMeter">JMeter</a></li>
<li><a href="Apache_Kafka" title="Apache Kafka">Kafka</a></li>
<li><a href="Apache_Kudu" title="Apache Kudu">Kudu</a></li>
<li><a href="Apache_Kylin" title="Apache Kylin">Kylin</a></li>
<li><a href="Apache_Lucene" title="Apache Lucene">Lucene</a></li>
<li><a href="Apache_Mahout" title="Apache Mahout">Mahout</a></li>
<li><a href="Apache_Maven" title="Apache Maven">Maven</a></li>
<li><a href="Apache_MINA" title="Apache MINA">MINA</a></li>
<li><a href="Mod_perl" title="Mod perl">mod_perl</a></li>
<li><a href="Apache_MyFaces" title="Apache MyFaces">MyFaces</a></li>
<li><a href="Apache_Mynewt" title="Apache Mynewt">Mynewt</a></li>
<li><a href="Apache_NiFi" title="Apache NiFi">NiFi</a></li>
<li><a href="NetBeans" title="NetBeans">NetBeans</a></li>
<li><a href="Apache_Nutch" title="Apache Nutch">Nutch</a></li>
<li><a href="NuttX" title="NuttX">NuttX</a></li>
<li><a href="Apache_OFBiz" title="Apache OFBiz">OFBiz</a></li>
<li><a href="Apache_Oozie" title="Apache Oozie">Oozie</a></li>
<li><a href="Apache_OpenEJB" title="Apache OpenEJB">OpenEJB</a></li>
<li><a href="Apache_OpenJPA" title="Apache OpenJPA">OpenJPA</a></li>
<li><a href="Apache_OpenNLP" title="Apache OpenNLP">OpenNLP</a></li>
<li><a href="Apache_OpenOffice" title="Apache OpenOffice">OрenOffice</a></li>
<li><a href="Apache_ORC" title="Apache ORC">ORC</a></li>
<li><a href="Apache_PDFBox" title="Apache PDFBox">PDFBox</a></li>
<li><a href="Apache_Parquet" title="Apache Parquet">Parquet</a></li>
<li><a href="Apache_Phoenix" title="Apache Phoenix">Phoenix</a></li>
<li><a href="Apache_POI" title="Apache POI">POI</a></li>
<li><a href="Apache_Pig" title="Apache Pig">Pig</a></li>
<li><a href="Apache_Pinot" title="Apache Pinot">Pinot</a></li>
<li><a href="Apache_Pivot" title="Apache Pivot">Pivot</a></li>
<li><a href="Apache_Qpid" title="Apache Qpid">Qpid</a></li>
<li><a href="Apache_Roller" title="Apache Roller">Roller</a></li>
<li><a href="Apache_RocketMQ" title="Apache RocketMQ">RocketMQ</a></li>
<li><a href="Apache_Samza" title="Apache Samza">Samza</a></li>
<li><a href="Apache_Shiro" title="Apache Shiro">Shiro</a></li>
<li><a href="Apache_SINGA" title="Apache SINGA">SINGA</a></li>
<li><a href="Apache_Sling" title="Apache Sling">Sling</a></li>
<li><a href="Apache_Solr" title="Apache Solr">Solr</a></li>
<li><a href="Apache_Spark" title="Apache Spark">Spark</a></li>
<li><a href="Apache_Storm" title="Apache Storm">Storm</a></li>
<li><a href="Apache_SpamAssassin" title="Apache SpamAssassin">SpamAssassin</a></li>
<li>
<ul><li><a href="Apache_Struts_1" title="Apache Struts 1">1</a></li></ul></li>
<li><a href="Apache_Subversion" title="Apache Subversion">Subversion</a></li>
<li><a href="Apache_Superset" title="Apache Superset">Superset</a></li>
<li><a href="Apache_SystemDS" title="Apache SystemDS">SystemDS</a></li>
<li><a href="Apache_Tapestry" title="Apache Tapestry">Tapestry</a></li>
<li><a href="Apache_Thrift" title="Apache Thrift">Thrift</a></li>
<li><a href="Apache_Tika" title="Apache Tika">Tika</a></li>
<li><a href="Apache_TinkerPop" class="mw-redirect" title="Apache TinkerPop">TinkerPop</a></li>
<li><a href="Apache_Tomcat" title="Apache Tomcat">Tomcat</a></li>
<li><a href="Apache_Trafodion" class="mw-redirect" title="Apache Trafodion">Trafodion</a></li>
<li><a href="Apache_Traffic_Server" title="Apache Traffic Server">Traffic Server</a></li>
<li><a href="UIMA" title="UIMA">UIMA</a></li>
<li><a href="Apache_Velocity" title="Apache Velocity">Velocity</a></li>
<li><a href="Apache_Wicket" title="Apache Wicket">Wicket</a></li>
<li><a href="Apache_Xalan" title="Apache Xalan">Xalan</a></li>
<li><a href="Apache_Xerces" title="Apache Xerces">Xerces</a></li>
<li><a href="Apache_XMLBeans" title="Apache XMLBeans">XMLBeans</a></li>
<li>Yetus</li>
<li><a href="Apache_ZooKeeper" title="Apache ZooKeeper">ZooKeeper</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Apache_Commons" title="Apache Commons">Commons</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Byte_Code_Engineering_Library" title="Byte Code Engineering Library">BCEL</a></li>
<li><a href="Bean_Scripting_Framework" title="Bean Scripting Framework">BSF</a></li>
<li><a href="Commons_Daemon" title="Commons Daemon">Daemon</a></li>
<li><a href="Apache_Jelly" title="Apache Jelly">Jelly</a></li>
<li><a href="Apache_Commons_Logging" title="Apache Commons Logging">Logging</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Incubator</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Apache_Taverna" title="Apache Taverna">Taverna</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other projects</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Apache_Batik" title="Apache Batik">Batik</a></li>
<li><a href="Apache_FOP_(Formatting_Objects_Processor)" class="mw-redirect" title="Apache FOP (Formatting Objects Processor)">FOP</a></li>
<li><a href="Apache_Ivy" title="Apache Ivy">Ivy</a></li>
<li><a href="Log4j" title="Log4j">Log4j</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Attic</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Apache_Apex" title="Apache Apex">Apex</a></li>
<li><a href="AxKit" title="AxKit">AxKit</a></li>
<li><a href="Apache_Beehive" title="Apache Beehive">Beehive</a></li>
<li><a href="Apache_iBATIS" title="Apache iBATIS">iBATIS</a></li>
<li><a href="Apache_Click" title="Apache Click">Click</a></li>
<li><a href="Apache_Continuum" title="Apache Continuum">Continuum</a></li>
<li><a href="Deltacloud" title="Deltacloud">Deltacloud</a></li>
<li><a href="Etch_(protocol)" title="Etch (protocol)">Etch</a></li>
<li><a href="Apache_Giraph" title="Apache Giraph">Giraph</a></li>
<li><a href="Apache_Hama" title="Apache Hama">Hama</a></li>
<li><a href="Apache_Harmony" title="Apache Harmony">Harmony</a></li>
<li><a href="Jakarta_Project" title="Jakarta Project">Jakarta</a></li>
<li><a href="Apache_Marmotta" title="Apache Marmotta">Marmotta</a></li>
<li><a href="Apache_MXNet" title="Apache MXNet">MXNet</a></li>
<li><a href="Apache_ODE" title="Apache ODE">ODE</a></li>
<li><a href="Jini" title="Jini">River</a></li>
<li><a href="Apache_Shale" title="Apache Shale">Shale</a></li>
<li><a href="Jakarta_Slide" class="mw-redirect" title="Jakarta Slide">Slide</a></li>
<li><a href="Sqoop" title="Sqoop">Sqoop</a></li>
<li><a href="Apache_Stanbol" title="Apache Stanbol">Stanbol</a></li>
<li><a href="Apache_Tuscany" class="mw-redirect" title="Apache Tuscany">Tuscany</a></li>
<li><a href="Apache_Wave" class="mw-redirect" title="Apache Wave">Wave</a></li>
<li><a href="Apache_XML" title="Apache XML">XML</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Licenses</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Apache_License" title="Apache License">Apache License</a></li></ul>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div>
<ul><li><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> <b>Category</b></li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"></div><div role="navigation" class="navbox" aria-labelledby="Java_(software_platform)419" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="3"><div id="Java_(software_platform)419" style="font-size:114%;margin:0 4em"><a href="Java_(software_platform)" title="Java (software platform)">Java (software platform)</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Platforms</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_virtual_machine" title="Java virtual machine">JVM</a></li>
<li><a href="Java_Platform%2C_Micro_Edition" title="Java Platform, Micro Edition">Java ME</a> (Micro)</li>
<li><a href="Java_Platform%2C_Standard_Edition" title="Java Platform, Standard Edition">Java SE</a> (Standard)</li>
<li><a href="Jakarta_EE" title="Jakarta EE">Jakarta EE</a> (Enterprise)</li>
<li><a href="Java_Card" title="Java Card">Java Card</a></li>
<li><a href="Android_software_development#SDK" title="Android software development">Android SDK</a></li>
<li><a href="GraalVM" title="GraalVM">GraalVM</a></li></ul>
</div></td><td class="noviewer navbox-image" rowspan="5" style="width:1px;padding:0 0 0 2px"><div><span typeof="mw:File"></span></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Technologies</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Oracle</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Squawk_virtual_machine" title="Squawk virtual machine">Squawk</a></li>
<li><a href="Java_Development_Kit" title="Java Development Kit">Java Development Kit</a></li>
<li><a href="OpenJDK" title="OpenJDK">OpenJDK</a></li>
<li><a href="Java_virtual_machine" title="Java virtual machine">Java virtual machine</a></li>
<li><a href="JavaFX" title="JavaFX">JavaFX</a></li>
<li><a href="Maxine_Virtual_Machine" title="Maxine Virtual Machine">Maxine VM</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Platform</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_applet" title="Java applet">Applets</a></li>
<li><a href="Jakarta_Servlet" title="Jakarta Servlet">Servlets</a></li>
<li><a href="MIDlet" title="MIDlet">MIDlets</a></li>
<li><a href="Jakarta_Server_Pages" title="Jakarta Server Pages">JSP</a></li>
<li><a href="Jakarta_Faces" title="Jakarta Faces">JSF</a></li>
<li><a href="Java_Web_Start" title="Java Web Start">Web Start</a> (JNLP)</li>
<li><a href="Pack200" title="Pack200">Pack200</a></li>
<li><a href="Java_Platform_Module_System" title="Java Platform Module System">Modules</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Major<br>third-party</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Blackdown_Java" title="Blackdown Java">Blackdown</a></li>
<li><a href="Eclipse_(software)" title="Eclipse (software)">Eclipse</a></li>
<li><a href="GNU_Classpath" title="GNU Classpath">GNU Classpath</a></li>
<li><a href="Google_Web_Toolkit" title="Google Web Toolkit">GWT</a></li>
<li><a href="Apache_Harmony" title="Apache Harmony">Harmony</a></li>
<li><a href="Hibernate_(framework)" title="Hibernate (framework)">Hibernate</a></li>
<li><a href="IcedTea" title="IcedTea">IcedTea</a></li>
<li><a href="Jazelle" title="Jazelle">Jazelle</a></li>
<li><a href="Spring_Framework" title="Spring Framework">Spring</a></li>
<li><a href="Oracle_TopLink" title="Oracle TopLink">TopLink</a></li>
<li><a href="WildFly" title="WildFly">WildFly</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">History</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_version_history" title="Java version history">Java version history</a></li>
<li><a href="Java_Community_Process" title="Java Community Process">Java Community Process</a></li>
<li><a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a></li>
<li><a href="Free_Java_implementations" title="Free Java implementations">Free Java implementations</a></li>
<li>Slogan: <i><a href="Write_once%2C_run_anywhere" title="Write once, run anywhere">Write once, run anywhere</a></i></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="List_of_JVM_languages" title="List of JVM languages">JVM<br>languages</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Java_(programming_language)" title="Java (programming language)">Java</a></li>
<li><a href="BeanShell" title="BeanShell">BeanShell</a></li>
<li><a href="Clojure" title="Clojure">Clojure</a></li>
<li><a href="Groovy_(programming_language)" class="mw-redirect" title="Groovy (programming language)">Groovy</a></li>
<li><a href="JRuby" title="JRuby">JRuby</a></li>
<li><a href="Jython" title="Jython">Jython</a></li>
<li><a href="Kotlin_(programming_language)" title="Kotlin (programming language)">Kotlin</a></li>
<li><a href="Processing" title="Processing">Processing</a></li>
<li><a href="Rhino_(JavaScript_engine)" title="Rhino (JavaScript engine)">Rhino</a></li>
<li><a href="Scala_(programming_language)" title="Scala (programming language)">Scala</a></li>
<li><a href="Oxygene_(programming_language)" title="Oxygene (programming language)">Oxygene</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Community</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Conferences</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="JavaOne" title="JavaOne">JavaOne</a></li>
<li><a href="Devoxx" title="Devoxx">Devoxx</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Organizations</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Apache_Software_Foundation" class="mw-redirect" title="Apache Software Foundation">Apache Software Foundation</a></li>
<li><a href="Eclipse_Foundation" title="Eclipse Foundation">Eclipse Foundation</a></li>
<li><a href="Java_Community_Process" title="Java Community Process">Java Community Process</a></li>
<li><a href="Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a></li>
<li><a href="Sun_Microsystems" title="Sun Microsystems">Sun Microsystems</a>, <a href="Sun_Microsystems_Laboratories" class="mw-redirect" title="Sun Microsystems Laboratories">Sun Microsystems Laboratories</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">People</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="James_Gosling" title="James Gosling">James Gosling</a></li>
<li><a href="Arthur_van_Hoff" title="Arthur van Hoff">Arthur van Hoff</a></li>
<li><a href="Urs_H%C3%B6lzle" title="Urs Hölzle">Urs Hölzle</a></li>
<li><a href="Patrick_Naughton" title="Patrick Naughton">Patrick Naughton</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><td class="navbox-abovebelow" colspan="3"><div><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> <b>Category</b> • <span class="nowrap"><span class="skin-invert-image noviewer" typeof="mw:File"></span> </span><a href="Portal%3AComputer_programming" title="Portal:Computer programming">Computer programming portal</a></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-05-29" href="https://en.wikipedia.org/wiki/?title=Apache_Struts&oldid=1292927167">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>